﻿using Util.ExtensionMethods;
using SupportLayer.Constantes.PRODUTO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using PersistenceLayer.Model;
using System.Data.SqlClient;
using PersistenceLayer.DAL;

namespace ByBikeShop.Administracao.Pages
{
	public partial class MaisVistos : BaseAdmin
	{
		public DateTime? Data = null;

		protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
				base.PageLoad(true);
		}

		public override void CarregaDados()
		{
		}

		public override void CarregaGrid()
		{
			grdMaisVistos.AutoGenerateColumns = false;
			grdMaisVistos.Columns.Clear();
			grdMaisVistos.Columns.Add(Util.Gridview.GeraBoundField("Modelo", "Produto", 400));
			grdMaisVistos.Columns.Add(Util.Gridview.GeraBoundField("Views", "Visualizações", 400));
		}

		public override void PopulaGrid()
		{
			DataTable dt = new DataTable();
			dt.Columns.Add("Modelo");
			dt.Columns.Add("Views");

			string sql_query = "";

			if (Data == null)
				sql_query = "select Produto_ID, COUNT(Produto_ID) 'Quant' from Produto_Views group by Produto_ID having count(Produto_ID) > 0 order by Quant desc";
			else
				sql_query = "select Produto_ID, COUNT(Produto_ID) 'Quant' from Produto_Views where Data >='" + Convert.ToDateTime(Data).toQueryDate() + "' group by Produto_ID having count(Produto_ID) > 0 order by Quant desc";


			Entities e = new Entities();

			SqlCommand cmd = new SqlCommand(sql_query, (SqlConnection)e.Database.Connection);

			if (cmd.Connection.State == ConnectionState.Closed)
				cmd.Connection.Open();

			SqlDataReader dr = cmd.ExecuteReader();

			if (dr.HasRows)
			{
				while (dr.Read())
				{
					Int64 pID = Convert.ToInt64(dr["Produto_ID"].ToString());
					dt.Rows.Add(new ProdutoDAL().Obter(pID).Modelo, dr["Quant"].ToString());
				}
			}


			//foreach (DataRow dr in )
			//{
			//	Int64 produtoID = Convert.ToInt64(dr["Produto_ID"].ToString());
			//	sql_query = "select Modelo from Produto where ID = " + produtoID;

			//	DataTable dtModelo = new Connection().Select(sql_query);

			//	if (dtModelo.Rows.Count <= 0)
			//		continue;

			//	string modelo = dtModelo.Rows[0][0].ToString();

			//	dt.Rows.Add(modelo, dr[1].ToString());
			//}

			grdMaisVistos.DataSource = dt;
			grdMaisVistos.DataBind();

		}

		protected void grdMaisVistos_RowCommand(object sender, GridViewCommandEventArgs e)
		{
		}

		protected void grdMaisVistos_RowDataBound(object sender, GridViewRowEventArgs e)
		{

		}

		protected void btnEssaSemana_Click(object sender, EventArgs e)
		{
			Data = DateTime.Now.AddDays(-7);
			PopulaGrid();
		}

		protected void btnEsseMes_Click(object sender, EventArgs e)
		{
			Data = DateTime.Now.AddMonths(-1);
			PopulaGrid();
		}

		protected void btnUltimosTresMeses_Click(object sender, EventArgs e)
		{
			Data = DateTime.Now.AddMonths(-3);
			PopulaGrid();
		}

		protected void btnTodos_Click(object sender, EventArgs e)
		{
			Data = null;
			PopulaGrid();
		}
	}
}